home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / MRAC / Mapping / m-to-length < prev    next >
Lisp/Scheme  |  1998-08-11  |  1KB  |  39 lines

  1. m-to-length rest-symbol length-lists symbol-list 
  2.  
  3. rest-symbol: symbol or nil
  4.  
  5. This function maps a list or lists of note-lengths against a list of symbols. If the list of symbols is longer than the note-length list the symbol output is trimmed accordingly. If the lists of symbols is shorter than the note-length list the symbol output will repeats itself. 
  6.  
  7. (setq len1 '(-1/20 1/10 1/20 1/20 3/20 -1/20 -1/20))
  8. (setq len2 '((1/8 -1/8 1/8 1/8) (-1/4) (3/32 1/32 -1/8) (-1/4)))
  9. (setq sym1 '(a b))
  10. (setq sym2 '(a b c d e f g))
  11. (setq sym3 '((a b) (c d) (e f)))
  12. (setq tuning '((2048 -1024) (0 2048 0 -2048)))
  13.  
  14. (m-to-length '= len1 sym1)
  15. => (= a b a b = =)
  16.  
  17. (m-to-length nil len1 sym1)
  18. => (a b a b)
  19.  
  20. (m-to-length '= len1 sym2)
  21. => (= a b c d = =)
  22.  
  23. (m-to-length nil len1 sym2)
  24. => (a b c d)
  25.  
  26. (m-to-length '= len2 sym1)
  27. => ((a = b a) (=) (b a =))
  28.  
  29. (m-to-length nil len2 sym1)
  30. => ((a b a) nil (b a))
  31.  
  32. (m-to-length 0 len2 tuning)
  33. => ((2048 0 -1024 2048) (0) (2048 -1024 0) (0))
  34.  
  35. (m-to-length nil len2 sym2)
  36. => ((a b c) nil (d e))
  37.  
  38. (m-to-length nil len2 sym3)
  39. => ((a b a) nil (e f) nil)